//
//  ViewController.swift
//  闭包的定义
//
//  Created by Summer on 2017/11/17.
//  Copyright © 2017年 Summer. All rights reserved.
//

import UIKit

class ViewController: UIViewController {

    /*
     闭包：
     1.事先准备好的代码
     2.在需要的时候执行
     3.可以当做参数传递
     
     */
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        
        // 不带参数的闭包
        // 没有参数，没有返回值，可连in一起省略
        let b1 = {
            print("最简单的闭包")
        }
        // 执行闭包
        b1()
        
        
        print("------------")
        
        // 带参数的闭包
        // 需要使用关键字 in 来分割实现
        // 参数，返回值，实现都在{}中
        // 格式：{ (参数) -> 返回值类型 in //实现}
        let b2 = {(x:Int) -> () in
            print(x)
        }
        // 执行闭包
        b2(10)
        
        
        // 带参数和返回值的闭包
        let b3 = { (x:Int) -> Int in
            return x + 10
        }
        print(b3(10))
        
    }

    // MARK: 使用常量记录函数
    func demo() {
        // 1.定义一个常量函数
        let f = sum
        
        // 2.在需要的时候执行
        
        print(f(10, 20))
    }
    
    func sum(x:Int, y:Int) -> Int {
        return x + y
    }


}

